package paneles

import modelo.Jugador
import modelo.Planta
import org.apache.wicket.markup.html.basic.Label
import org.apache.wicket.markup.html.form.DropDownChoice
import org.apache.wicket.markup.html.form.Form
import org.apache.wicket.markup.html.panel.Panel
import org.uqbar.commons.model.UserException
import org.uqbar.wicket.xtend.WicketExtensionFactoryMethods
import org.uqbar.wicket.xtend.XButton

class PanelPlantar extends Panel {
	extension WicketExtensionFactoryMethods = new WicketExtensionFactoryMethods
	Jugador jugador1

	new(String id, Jugador jugador) {

		super(id)
		this.jugador1 = jugador
		val form = new Form<Jugador>("formPlantar", jugador1.asCompoundModel)
		this.addChild(new Label("fila", jugador.jardin.filas.indexOf(jugador.filaSeleccionada)))
		this.addChild(form)
		this.crearForm(form, jugador)
		form.addChild(
			new XButton("botonPlantar") => [
				onClick = [ |
					try {
						this.plantar()
						this.replaceWith(new PanelJardin("jardin", jugador1))
					}
					catch(UserException e){
						info(e.getMessage())
					}
				]
			])

	}

	def crearForm(Form<Jugador> form, Jugador jugador) {
		form.addChild(
			new DropDownChoice<Planta>("plantaSeleccionada") => [
				choices = loadableModel([| getPlantas(jugador)]) 
				choiceRenderer = choiceRenderer([Planta i|i.getNombre()])
			]
		)
	}
	
	def getPlantas(Jugador jugador) {
		jugador.filaSeleccionada.getPlantasPosibles(jugador)
	}

	def void plantar() {
		jugador1.plantarUnaPlanta()
	}
}
